package com.kingyun.gpsinspection.purificationservice.facade.service.som;

import com.alibaba.fastjson.JSONArray;
import com.kingyun.gpsinspection.purificationservice.facade.model.File;
import com.kingyun.gpsinspection.purificationservice.facade.model.jsm.RedisValue;
import com.kingyun.gpsinspection.purificationservice.facade.model.som.FacadeDataItem;
import com.kingyun.gpsinspection.purificationservice.facade.model.som.FacadeWorkOrder;
import com.kingyun.gpsinspection.purificationservice.facade.model.som.OperatingUnitForm;
import com.kingyun.gpsinspection.purificationservice.facade.model.som.UnitStepResult;

import java.math.BigDecimal;
import java.util.List;

/**
 * 工单详情页面调用接口
 * Created by yangcs on 2017/3/16.
 */
public interface OutWorkOrderService {

    /**
     * 查询工单信息
     * @param workOrderId
     * @return
     */
    FacadeWorkOrder getOrderById(String workOrderId);

    /**
     * 根据cellId查询操作单元表单（含结果）
     * @param cellId
     * @param cellResultId
     * @return
     */
    OperatingUnitForm getUnitFormByCellId(String cellId, String cellResultId, BigDecimal version);

    /**
     * 根据工单id，操作单元/工作内容id，版本 查询步骤信息
     * @param workOrderId   工单id
     * @param cellId        操作单元/工作内容id
     * @param stepVersion   版本
     * @param cellResultId  工单对应完成id
     * @return
     */
    List<UnitStepResult> findByWorkOrderId(String workOrderId, String cellId, BigDecimal stepVersion, String cellResultId);

    /**
     * 根据步骤Id查询数据项
     * @param stepId
     * @param stepResultId
     * @return
     */
    List<FacadeDataItem> getDataItemsByStepId(String stepId, String stepResultId);

    /**
     * 根据业务id和类型查询文件
     * @param businessId
     * @param type
     * @return
     */
    List<File> findByBusiness(String businessId, int type);

    /**
     * 首页工单统计
     * @return
     */
    JSONArray getOrder(RedisValue redisValue);

    /**
     * 未超期未完成的工单总数
     * @param redisValue
     * @return
     */
    int getUnFinishOrder(RedisValue redisValue);
}
